/*
*   Fichier :		Fonctions.cpp
*	Auteurs :		P12
*   Date :			2013-04-03
*   Version :		vSuivieProjet
*	Description :	Applications de notre projet
*/

#include <cstring>
#include <iostream>
#include <fstream>
#include <sstream>
#include "Fonctions.h"

using namespace std; 

void Fonctions::fonction()
{
	// Pseudo-Constructeur
	etatLumiere = Eteinte;
	etatCamera = Arret;
	etatMusique = Pause;
	etatTemp = Cachee;

	// Boucle While qui permet a l'utilisateur de changer l'etat des fonctions aussi souvent que possible
	cout << "Test des fonctions du projet:" << endl;
	cout << "Les fonctions disponibles sont la lumiere (l), la musique (m), la temperature (t) et la camera (c) => " << endl; 
	while (fn != '-'){ 
		cin >> fn;
		if (fn == 'l' || fn == 'L'){
			lumiere();
		} else if (fn == 'm' || fn == 'M'){
			jouerMusic();
		} else if (fn == 't' || fn == 'T'){
			afficherTemp();
		} else if (fn == 'c' || fn == 'C'){
			camera();
		} else {
			cout << "La fonction que vous avez selectionnee n'existe pas, merci de choisir parmis les fonctions definies" << endl;
		}
		
		}
	// Affichage des etats finales des fonctions
	cout << "Fin des tests, etats actuels des fonctions: " << endl;
	cout << "Etat Lumiere: " << EtatLumiereString[etatLumiere] << endl
		 << "Etat Camera: " << EtatCameraString[etatCamera] << endl
		 << "Etat Musique: " << EtatMusiqueString[etatMusique] << endl
		 << "Etat Temperature: " << EtatTempString[etatTemp] << endl;
}

// Fonction d'etat de la lumiere
// Description: A chaque fois que l'etat de la fonction lumiere change, on affiche son nouvel etat.
void Fonctions::lumiere(){
	if ( etatLumiere == Allumee){
		etatLumiere = Eteinte;
		cout << "La lumiere est maintenant eteinte. " << endl;
	} else if ( etatLumiere == Eteinte){
		etatLumiere = Allumee;
		cout << "La lumiere est maintenant allumee. " << endl;
	}
}

// Fonction d'etat de la musique
// Description: A chaque fois que l'etat de la fonction Musique change, on affiche son nouvel etat.
void Fonctions::jouerMusic(){
	if (etatMusique == Lecture){
		etatMusique = Pause;
		cout << "La musique est maintenant en pause. " << endl;
	} else if (etatMusique == Pause){
		etatMusique = Lecture;
		cout << "La musique est maintenant en lecture. " << endl;
	}
}

// Fonction d'etat de la temperature
// Description: A chaque fois que l'etat de la fonction temperature change, on affiche son nouvel etat.
void Fonctions::afficherTemp(){
	if (etatTemp == Affichee){
		etatTemp = Cachee;
		cout << "La temperature n'est plus affichee maintenant. " << endl;
	} else if (etatTemp == Cachee){
		etatTemp = Affichee;
		cout << "La temperature est maintenant affichee. " << endl;
	}
}

// Fonction d'etat de la camera
// Description: A chaque fois que l'etat de la fonction camera change, on affiche son nouvel etat.
void Fonctions::camera(){
	if (etatCamera == Marche){
		etatCamera = Arret;
		cout << "La camera est maintenant en arret. " << endl;
	} else if (etatCamera == Arret){
		etatCamera = Marche;
		cout << "La camera est maintenant en marche. " << endl;
	}
}
